package br.com.logistica.mbean ;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import br.com.logistica.delegate.BusinessDelegate;
import br.com.logistica.util.dto.ServiceDTO;
import br.com.logistica.vo.Produto;


public class ProdutoManagedBean implements Serializable
{
    private static Logger      logger      = Logger.getLogger( ProdutoManagedBean.class ) ;
    
    private ServiceDTO         requestDTO  = new ServiceDTO( ) ;
    private ServiceDTO         responseDTO = new ServiceDTO( ) ;
    private Produto            produto     = new Produto( ) ;
    private ArrayList<Produto> produtos    = new ArrayList<Produto>();

    public ProdutoManagedBean() {
    	produtos = (ArrayList<Produto>)atualizarListaProdutos( ) ;
	}
    
    public ArrayList<Produto> getProdutos( )
    {
        return( produtos ) ;
    }

    public void setProdutos( ArrayList<Produto> produtos )
    {
        this.produtos = produtos ;
    }

    public Produto getProduto( )
    {
        return( produto ) ;
    }

    public void setProduto( Produto produto )
    {
        this.produto = produto ;
    }

    private List<Produto> atualizarListaProdutos( )
    {
        List<Produto> produtosBanco ;
        
        try
        {
            responseDTO = BusinessDelegate.getInstance( ).pesquisarTodosProdutos( ) ;
        }
        catch( Exception e )
        {
            logger.error( e ) ;
        }
        
        produtosBanco = (ArrayList<Produto>)responseDTO.get( "produto" ) ;
        produtos      = (ArrayList<Produto>)produtosBanco ;
        
        limparServideDTO( ) ;
        
        return( produtosBanco ) ;
    }

    private void limparServideDTO( )
    {
        produto     = new Produto   ( ) ;
        requestDTO  = new ServiceDTO( ) ;
        responseDTO = new ServiceDTO( ) ;
    }

    public void deletarProduto( )
    {
        requestDTO.set( "produto", produto ) ;
        
        try
        {
            responseDTO = BusinessDelegate.getInstance( ).deletarProduto( requestDTO ) ;
        }
        catch( Exception e )
        {
            logger.error( e ) ;
        }
        
        atualizarListaProdutos( ) ;
        limparServideDTO      ( ) ;
    }

    public void inserir( )
    {
        requestDTO.set( "produto", produto ) ;
        
        try
        {
            responseDTO = BusinessDelegate.getInstance( ).inserirProduto( requestDTO ) ;
        }
        catch( Exception e )
        {
            logger.error( e ) ;
        }
        
        atualizarListaProdutos( ) ;
        limparServideDTO      ( ) ;
    }
}